<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:p="http://primefaces.org/ui">
<ui:composition template="/pages/templates/default.xhtml">
	<ui:define name="conteudo">
		<f:view>
		<p align="left">
			<b>Manual ProLinear</b><br/><br/>
			O Software ProLinear permite a resolução de problemas de programação linear, inteira e mista, permitindo que sejam configurados 
 			parâmetros para a exibição dos relatórios.<br/> <br/> 
 			<b>Tipos de tokens utilizados:</b><br/><br/>
 			<b>Identificador de Variáveis:</b> Iniciados com letra e podendo conter números ou o caracter "_" (Underline).<br/> 
			<b>Valor Inteiro:</b> contendo apenas caracteres numéricos.<br/>
			<b>Valor Real:</b> contendo caracteres numéricos e o caracter "." (ponto), seguido da parte decimal do valor.<br/>
			<b>Literais:</b> qualquer combinação de caracteres entre apóstrofes.<br/>
			<b>Variáveis booleanas:</b> "TRUE" ou "FALSE".<br/>
			<b>Comentários: </b>qualquer sequência de caracteres iniciando com "/*" e terminados com "*/". Comentários são ignorados pelo compilador, servem apenas para dar mais clareza ao modelo.<br/><br/>
			
			<b>MODELANDO UM PROBLEMA DE PROGRAMAÇÃO LINEAR SIMPLES</b><br/><br/>

			A modelagem de um problema para ser resolvido através do ProLinear é a seguinte:<br/><br/>

		    <b>Definição da função objetivo:</b> iniciando com o tipo do problema, onde pode ser utilizado o literal "MAX" quando o problema for de maximização, ou o literal "MIN" quando o problema for de minimização,
seguido da expressão que calcula o valor da função. <br/><br/>

			<b>Definição das restrições:</b> deve iniciar com o literal "ST" (também aceita "SUBJECT TO" ou "RESTRICOES"),
 			seguido das restrições definidas durante a modelagem. <br/>
			Para cada restrição pode ser criado um identificador, que servirá para que a restrição possa ser referenciada nos parâmetros.<br/>
			A definição do identificador da restriçao é feita colocando o identificador desejado, 
			que não pode conter espaços e nem caracteres especiais, entre parênteses antes da restrição.<br/>
			Ex.: (DEMANDA_MINIMA) X1 &gt;= 5<br/><BR />
			<b>Finalização do modelo:</b> podendo ser representada pelos literais "END" ou "FIM".<BR />
			Ex.:  MAX 3X1 + X2<BR /> 
	  			SUBJECT TO   	<BR />
			    X1 &lt;= 5     <BR />
		        X1 + X2 &lt;= 8<BR />
				END<BR /><BR/>
				
				<b>UTILIZAÇÃO DOS PARÂMETROS</b><BR /><BR />
				O ajuste de parâmetros do ProLinear é feito após a definição de restrições, iniciando com o literal "PARAMETROS"
				seguido dos parâmetros desejados. <BR />
				Os parâmetros permitidos pelo ProLinear são: <BR /> <BR />
				
				<b>Descrição da Restrição: </b> descrição do que a restrição representa (matéria-prima, nº de funcionários, etc). <BR />   
				   Utilização: inicia com o literal "DESCRICAO" seguido do identificador da restrição, seguido do sinal de igual e da descrição desejada,
   					que deve estar entre apóstrofes. <BR />
				   Ex.: DESCRICAO DEMANDA = 'Demanda mínima dos produtos' <BR /> <BR />
				   
				 <b>Fator de conversão:</b> constante que converte o valor da restrição para o número de unidades reais da restrição, utilizado para a exibição do relatório. <BR />
   				Ex.: Uma empresa possui 10 máquinas de corte e a jornada de trabalho semanal é de 40 horas. Sendo assim, a restrição de corte seria de 400 horas. 
   				Configura-se, então, a taxa de conversão como 40, pois cada 40 horas representa uma máquina.
   				Se durante a resolução é encontrada uma folga no valor de 80, o sistema converterá a folga de acordo com o fator configurado, informando, neste caso, uma folga de 2 máquinas. <BR />
   				Utilização: inicia com o literal "CONVERSAO" seguido do identificador da restrição, seguido do seinal de igual e do fator de conversão utilizado. <BR />
   				Ex.: CONVERSAO MAQUINAS_CORTE = 40 <BR /><BR />
   				
   				<b>Descrição de folga: </b> descrição da folga, que será utilizada na geração do relatório. Seguindo o exemplo anterior, caso for configurado a descrição de folga como
				 "ociosas", o relatório conterá a seguinte mensagem: "Foi possível detectar 2 máquinas de corte ociosas". <BR />
			    Utilização: inicia com o literal "FOLGA", seguido do identificador da restrição, seguido do sinal de igual e da descrição da folga entre apóstrofes. <BR />
   				Ex.: FOLGA MAQUINAS_CORTE = 'ociosas' <BR /> 
   				Observação: Para utilizar corretamente a descrição de folga é necessário configurar a descrição da restrição anteriormente.<BR /> <BR />
   				
   				<b>Casas Decimais: </b> número de casas decimais utilizadas no arredondamento dos valores. <BR />
   				Utilização: inicia com o literal "CASAS_DECIMAIS", seguido do sinal de igual e do número de casas decimais desejadas. <BR />
   				Ex.: CASAS_DECIMAIS = 3 <BR /><BR />
   				
				<b>Exibir somente a solução: </b>utilizado quando o usuário desejar que sejam exibidos apenas os valores da função objetivo e das variáveis.<BR />
				Utilização: inicia com o literal "SOMENTE_SOLUCAO", seguido do sinal de igual e de uma variável booleana. O valor padrão para este parâmetro é FALSE. <BR />
   				Ex.: SOMENTE_SOLUCAO = TRUE <BR /><BR />
   				
   				<b>Exibir estatísticas:</b> utilizado quando o usuário desejar que o sistema exiba o número de variáveis e restrições do problema modelado. <BR />
   				Utilização: inicia com o literal "MOSTRA_ESTATISTICAS", seguido do sinal de igual e uma variável booleana. O valor padrão para este parâmetro é FALSE. <BR />
   				Ex: MOSTRAR_ESTATISTICAS = TRUE <BR /><BR />
   				
   				<b>Reescrever problema: </b> utilizado quando o usuário desejar que o sistema reescreva o problema original, ajustando o valor das restrições para remover as folgas, respeitando o fator de conversão, caso exista. 
   				Seguindo o exemplo das máquinas de corte, o sistema reescreverá a restrição de máquinas de corte para 320, ou seja, 400 do valor original subtraindo a folga de 80. <BR />
			    Utilização: inicia com o literal "REESCREVER", seguido do sinal de igual e uma variável booleana. O valor padrão para este parâmetro é TRUE. <BR />
   				Ex.: REESCREVER = FALSE <BR /> <BR />
   				
   				<b>Transformar variável para valor inteiro: </b> utilizado quando o usuário desejar que determinada variável assuma, obrigatoriamente, um valor inteiro. <BR />
   				Utilização: inicia com o literal "GIN", seguido do nome da variável. <BR />
   				Ex.: GIN X1 <BR /><BR />
   				
   				<b>Definição de campo calculado: </b>utilizado para definir campos cujo valor é resultado de uma expressão numérica contendo os valores das variáveis do problema. <BR />
				Utilização: inicia com o literal "CAMPO", seguido do identificado desejado para o campo, seguido pelo sinal de igual e da expressão numérica desejada, entre apóstrofes. As operações suportadas são adição (+), subtração (-), multiplicação (*), divisão (/) e potenciação(^). <BR />
				Ex.: CAMPO PERC_X1 = 'X1 / (X1 + X2)' <BR /><BR />
							
				<b>UTILIZAÇÃO DE PROGRAMAÇÃO INTEIRA OU MISTA </b> <BR /><BR />

				Para utilizar a programação inteira ou mista você pode informar informar as variáveis que se deseja que devam assumir valores inteiros através do parâmetro "GIN", 
				explicado anteriormente, ou utilizando o literal "INT" depois do tipo do problema, na definição da função objetivo. Utilizando o o parâmetro "INT", todas
				as variáveis da função objetivo assumirão valores inteiros. <BR />
				Ex.:  MAX 3X1 + X2 <BR /> 
	  			SUBJECT TO <BR />   	
				X1 &lt;= 5 <BR />     
				X1 + X2 &lt;= 8 <BR />
	  		    PARAMETROS<BR />
				GIN X1<BR />
				GIN X2<BR />
	  			END<BR /><BR />	  
	  			ou<BR /><BR />	  
	  			MAX INT 3X1 + X2<BR /> 
	  			SUBJECT TO<BR />   	
				X1 &lt;= 5<BR />     
				X1 + X2 &lt;= 8<BR />
	  			END<BR />
   
   
				
		</p>
		</f:view>
	</ui:define>
</ui:composition>
</html>
